﻿using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Web;
using System.Data.Common;

namespace Transcend.FileUploader.Utility
{
	public class WebHelper
	{

		private static Dictionary<string, string> mimeTypeMap = new Dictionary<string, string>();

		/// <summary>
		/// 初始化文件后缀名与mimetype的映射
		/// </summary>
		static WebHelper()
		{

			mimeTypeMap.Add(".001", "application/x-001");
			mimeTypeMap.Add(".323", "text/h323");
			mimeTypeMap.Add(".907", "drawing/907");
			mimeTypeMap.Add(".acp", "audio/x-mei-aac");
			mimeTypeMap.Add(".aif", "audio/aiff");
			mimeTypeMap.Add(".aiff", "audio/aiff");
			mimeTypeMap.Add(".asa", "text/asa");
			mimeTypeMap.Add(".asp", "text/asp");
			mimeTypeMap.Add(".au", "audio/basic");
			mimeTypeMap.Add(".awf", "application/vnd.adobe.workflow");
			mimeTypeMap.Add(".bmp", "application/x-bmp");
			mimeTypeMap.Add(".c4t", "application/x-c4t");
			mimeTypeMap.Add(".cal", "application/x-cals");
			mimeTypeMap.Add(".cdf", "application/x-netcdf");
			mimeTypeMap.Add(".cel", "application/x-cel");
			mimeTypeMap.Add(".cg4", "application/x-g4");
			mimeTypeMap.Add(".cit", "application/x-cit");
			mimeTypeMap.Add(".cml", "text/xml");
			mimeTypeMap.Add(".cmx", "application/x-cmx");
			mimeTypeMap.Add(".crl", "application/pkix-crl");
			mimeTypeMap.Add(".csi", "application/x-csi");
			mimeTypeMap.Add(".cut", "application/x-cut");
			mimeTypeMap.Add(".dbm", "application/x-dbm");
			mimeTypeMap.Add(".dcd", "text/xml");
			mimeTypeMap.Add(".der", "application/x-x509-ca-cert");
			mimeTypeMap.Add(".dib", "application/x-dib");
			mimeTypeMap.Add(".doc", "application/msword");
			mimeTypeMap.Add(".drw", "application/x-drw");
			mimeTypeMap.Add(".dwf", "Model/vnd.dwf");
			mimeTypeMap.Add(".dwg", "application/x-dwg");
			mimeTypeMap.Add(".dxf", "application/x-dxf");
			mimeTypeMap.Add(".emf", "application/x-emf");
			mimeTypeMap.Add(".ent", "text/xml");
			mimeTypeMap.Add(".eps", "application/x-ps");
			mimeTypeMap.Add(".etd", "application/x-ebx");
			mimeTypeMap.Add(".fax", "image/fax");
			mimeTypeMap.Add(".fif", "application/fractals");
			mimeTypeMap.Add(".frm", "application/x-frm");
			mimeTypeMap.Add(".gbr", "application/x-gbr");
			mimeTypeMap.Add(".gif", "image/gif");
			mimeTypeMap.Add(".gp4", "application/x-gp4");
			mimeTypeMap.Add(".hmr", "application/x-hmr");
			mimeTypeMap.Add(".hpl", "application/x-hpl");
			mimeTypeMap.Add(".hrf", "application/x-hrf");
			mimeTypeMap.Add(".htc", "text/x-component");
			mimeTypeMap.Add(".html", "text/html");
			mimeTypeMap.Add(".htx", "text/html");
			mimeTypeMap.Add(".ico", "image/x-icon");
			mimeTypeMap.Add(".iff", "application/x-iff");
			mimeTypeMap.Add(".igs", "application/x-igs");
			mimeTypeMap.Add(".img", "application/x-img");
			mimeTypeMap.Add(".isp", "application/x-internet-signup");
			mimeTypeMap.Add(".java", "java/*");
			mimeTypeMap.Add(".jpe", "image/jpeg");
			mimeTypeMap.Add(".jpeg", "image/jpeg");
			mimeTypeMap.Add(".jpg", "application/x-jpg");
			mimeTypeMap.Add(".jsp", "text/html");
			mimeTypeMap.Add(".lar", "application/x-laplayer-reg");
			mimeTypeMap.Add(".lavs", "audio/x-liquid-secure");
			mimeTypeMap.Add(".lmsff", "audio/x-la-lms");
			mimeTypeMap.Add(".ltr", "application/x-ltr");
			mimeTypeMap.Add(".m2v", "video/x-mpeg");
			mimeTypeMap.Add(".m4e", "video/mpeg4");
			mimeTypeMap.Add(".man", "application/x-troff-man");
			mimeTypeMap.Add(".mdb", "application/msaccess");
			mimeTypeMap.Add(".mfp", "application/x-shockwave-flash");
			mimeTypeMap.Add(".mhtml", "message/rfc822");
			mimeTypeMap.Add(".mid", "audio/mid");
			mimeTypeMap.Add(".mil", "application/x-mil");
			mimeTypeMap.Add(".mnd", "audio/x-musicnet-download");
			mimeTypeMap.Add(".mocha", "application/x-javascript");
			mimeTypeMap.Add(".mp1", "audio/mp1");
			mimeTypeMap.Add(".mp2v", "video/mpeg");
			mimeTypeMap.Add(".mp4", "video/mpeg4");
			mimeTypeMap.Add(".mpd", "application/vnd.ms-project");
			mimeTypeMap.Add(".mpeg", "video/mpg");
			mimeTypeMap.Add(".mpga", "audio/rn-mpeg");
			mimeTypeMap.Add(".mps", "video/x-mpeg");
			mimeTypeMap.Add(".mpv", "video/mpg");
			mimeTypeMap.Add(".mpw", "application/vnd.ms-project");
			mimeTypeMap.Add(".mtx", "text/xml");
			mimeTypeMap.Add(".net", "image/pnetvue");
			mimeTypeMap.Add(".nws", "message/rfc822");
			mimeTypeMap.Add(".out", "application/x-out");
			mimeTypeMap.Add(".p12", "application/x-pkcs12");
			mimeTypeMap.Add(".p7c", "application/pkcs7-mime");
			mimeTypeMap.Add(".p7r", "application/x-pkcs7-certreqresp");
			mimeTypeMap.Add(".pc5", "application/x-pc5");
			mimeTypeMap.Add(".pcl", "application/x-pcl");
			mimeTypeMap.Add(".pdf", "application/pdf");
			mimeTypeMap.Add(".pdx", "application/vnd.adobe.pdx");
			mimeTypeMap.Add(".pgl", "application/x-pgl");
			mimeTypeMap.Add(".pko", "application/vnd.ms-pki.pko");
			mimeTypeMap.Add(".plg", "text/html");
			mimeTypeMap.Add(".plt", "application/x-plt");
			mimeTypeMap.Add(".png", "application/x-png");
			mimeTypeMap.Add(".ppa", "application/vnd.ms-powerpoint");
			mimeTypeMap.Add(".pps", "application/vnd.ms-powerpoint");
			mimeTypeMap.Add(".ppt", "application/x-ppt");
			mimeTypeMap.Add(".prf", "application/pics-rules");
			mimeTypeMap.Add(".prt", "application/x-prt");
			mimeTypeMap.Add(".ps", "application/postscript");
			mimeTypeMap.Add(".pwz", "application/vnd.ms-powerpoint");
			mimeTypeMap.Add(".ra", "audio/vnd.rn-realaudio");
			mimeTypeMap.Add(".ras", "application/x-ras");
			mimeTypeMap.Add(".rdf", "text/xml");
			mimeTypeMap.Add(".red", "application/x-red");
			mimeTypeMap.Add(".rjs", "application/vnd.rn-realsystem-rjs");
			mimeTypeMap.Add(".rlc", "application/x-rlc");
			mimeTypeMap.Add(".rm", "application/vnd.rn-realmedia");
			mimeTypeMap.Add(".rmi", "audio/mid");
			mimeTypeMap.Add(".rmm", "audio/x-pn-realaudio");
			mimeTypeMap.Add(".rms", "application/vnd.rn-realmedia-secure");
			mimeTypeMap.Add(".rmx", "application/vnd.rn-realsystem-rmx");
			mimeTypeMap.Add(".rp", "image/vnd.rn-realpix");
			mimeTypeMap.Add(".rsml", "application/vnd.rn-rsml");
			mimeTypeMap.Add(".rtf", "application/msword");
			mimeTypeMap.Add(".rv", "video/vnd.rn-realvideo");
			mimeTypeMap.Add(".sat", "application/x-sat");
			mimeTypeMap.Add(".sdw", "application/x-sdw");
			mimeTypeMap.Add(".slb", "application/x-slb");
			mimeTypeMap.Add(".slk", "drawing/x-slk");
			mimeTypeMap.Add(".smil", "application/smil");
			mimeTypeMap.Add(".snd", "audio/basic");
			mimeTypeMap.Add(".sor", "text/plain");
			mimeTypeMap.Add(".spl", "application/futuresplash");
			mimeTypeMap.Add(".ssm", "application/streamingmedia");
			mimeTypeMap.Add(".stl", "application/vnd.ms-pki.stl");
			mimeTypeMap.Add(".sty", "application/x-sty");
			mimeTypeMap.Add(".swf", "application/x-shockwave-flash");
			mimeTypeMap.Add(".tg4", "application/x-tg4");
			mimeTypeMap.Add(".tif", "image/tiff");
			mimeTypeMap.Add(".tiff", "image/tiff");
			mimeTypeMap.Add(".top", "drawing/x-top");
			mimeTypeMap.Add(".tsd", "text/xml");
			mimeTypeMap.Add(".uin", "application/x-icq");
			mimeTypeMap.Add(".vcf", "text/x-vcard");
			mimeTypeMap.Add(".vdx", "application/vnd.visio");
			mimeTypeMap.Add(".vpg", "application/x-vpeg005");
			mimeTypeMap.Add(".vsd", "application/x-vsd");
			mimeTypeMap.Add(".vst", "application/vnd.visio");
			mimeTypeMap.Add(".vsw", "application/vnd.visio");
			mimeTypeMap.Add(".vtx", "application/vnd.visio");
			mimeTypeMap.Add(".wav", "audio/wav");
			mimeTypeMap.Add(".wb1", "application/x-wb1");
			mimeTypeMap.Add(".wb3", "application/x-wb3");
			mimeTypeMap.Add(".wiz", "application/msword");
			mimeTypeMap.Add(".wk4", "application/x-wk4");
			mimeTypeMap.Add(".wks", "application/x-wks");
			mimeTypeMap.Add(".wma", "audio/x-ms-wma");
			mimeTypeMap.Add(".wmf", "application/x-wmf");
			mimeTypeMap.Add(".wmv", "video/x-ms-wmv");
			mimeTypeMap.Add(".wmz", "application/x-ms-wmz");
			mimeTypeMap.Add(".wpd", "application/x-wpd");
			mimeTypeMap.Add(".wpl", "application/vnd.ms-wpl");
			mimeTypeMap.Add(".wr1", "application/x-wr1");
			mimeTypeMap.Add(".wrk", "application/x-wrk");
			mimeTypeMap.Add(".ws2", "application/x-ws");
			mimeTypeMap.Add(".wsdl", "text/xml");
			mimeTypeMap.Add(".xdp", "application/vnd.adobe.xdp");
			mimeTypeMap.Add(".xfd", "application/vnd.adobe.xfd");
			mimeTypeMap.Add(".xhtml", "text/html");
			mimeTypeMap.Add(".xls", "application/x-xls");
			mimeTypeMap.Add(".xml", "text/xml");
			mimeTypeMap.Add(".xq", "text/xml");
			mimeTypeMap.Add(".xquery", "text/xml");
			mimeTypeMap.Add(".xsl", "text/xml");
			mimeTypeMap.Add(".xwd", "application/x-xwd");
			mimeTypeMap.Add(".sis", "application/vnd.symbian.install");
			mimeTypeMap.Add(".x_t", "application/x-x_t");
			mimeTypeMap.Add(".apk", "application/vnd.android.package-archive");
			mimeTypeMap.Add(".301", "application/x-301");
			mimeTypeMap.Add(".906", "application/x-906");
			mimeTypeMap.Add(".a11", "application/x-a11");
			mimeTypeMap.Add(".ai", "application/postscript");
			mimeTypeMap.Add(".aifc", "audio/aiff");
			mimeTypeMap.Add(".anv", "application/x-anv");
			mimeTypeMap.Add(".asf", "video/x-ms-asf");
			mimeTypeMap.Add(".asx", "video/x-ms-asf");
			mimeTypeMap.Add(".avi", "video/avi");
			mimeTypeMap.Add(".biz", "text/xml");
			mimeTypeMap.Add(".bot", "application/x-bot");
			mimeTypeMap.Add(".c90", "application/x-c90");
			mimeTypeMap.Add(".cat", "application/vnd.ms-pki.seccat");
			mimeTypeMap.Add(".cdr", "application/x-cdr");
			mimeTypeMap.Add(".cer", "application/x-x509-ca-cert");
			mimeTypeMap.Add(".cgm", "application/x-cgm");
			mimeTypeMap.Add(".class", "java/*");
			mimeTypeMap.Add(".cmp", "application/x-cmp");
			mimeTypeMap.Add(".cot", "application/x-cot");
			mimeTypeMap.Add(".crt", "application/x-x509-ca-cert");
			mimeTypeMap.Add(".css", "text/css");
			mimeTypeMap.Add(".dbf", "application/x-dbf");
			mimeTypeMap.Add(".dbx", "application/x-dbx");
			mimeTypeMap.Add(".dcx", "application/x-dcx");
			mimeTypeMap.Add(".dgn", "application/x-dgn");
			mimeTypeMap.Add(".dll", "application/x-msdownload");
			mimeTypeMap.Add(".dot", "application/msword");
			mimeTypeMap.Add(".dtd", "text/xml");
			mimeTypeMap.Add(".dxb", "application/x-dxb");
			mimeTypeMap.Add(".edn", "application/vnd.adobe.edn");
			mimeTypeMap.Add(".eml", "message/rfc822");
			mimeTypeMap.Add(".epi", "application/x-epi");
			mimeTypeMap.Add(".exe", "application/x-msdownload");
			mimeTypeMap.Add(".fdf", "application/vnd.fdf");
			mimeTypeMap.Add(".fo", "text/xml");
			mimeTypeMap.Add(".g4", "application/x-g4");
			mimeTypeMap.Add(".	application", "/x-");
			mimeTypeMap.Add(".gl2", "application/x-gl2");
			mimeTypeMap.Add(".hgl", "application/x-hgl");
			mimeTypeMap.Add(".hpg", "application/x-hpgl");
			mimeTypeMap.Add(".hqx", "application/mac-binhex40");
			mimeTypeMap.Add(".hta", "application/hta");
			mimeTypeMap.Add(".htm", "text/html");
			mimeTypeMap.Add(".htt", "text/webviewhtml");
			mimeTypeMap.Add(".icb", "application/x-icb");
			mimeTypeMap.Add(".ig4", "application/x-g4");
			mimeTypeMap.Add(".iii", "application/x-iphone");
			mimeTypeMap.Add(".ins", "application/x-internet-signup");
			mimeTypeMap.Add(".IVF", "video/x-ivf");
			mimeTypeMap.Add(".jfif", "image/jpeg");
			mimeTypeMap.Add(".js", "application/x-javascript");
			mimeTypeMap.Add(".la1", "audio/x-liquid-file");
			mimeTypeMap.Add(".latex", "application/x-latex");
			mimeTypeMap.Add(".lbm", "application/x-lbm");
			mimeTypeMap.Add(".ls", "application/x-javascript");
			mimeTypeMap.Add(".m1v", "video/x-mpeg");
			mimeTypeMap.Add(".m3u", "audio/mpegurl");
			mimeTypeMap.Add(".mac", "application/x-mac");
			mimeTypeMap.Add(".math", "text/xml");
			mimeTypeMap.Add(".mht", "message/rfc822");
			mimeTypeMap.Add(".mi", "application/x-mi");
			mimeTypeMap.Add(".midi", "audio/mid");
			mimeTypeMap.Add(".mml", "text/xml");
			mimeTypeMap.Add(".mns", "audio/x-musicnet-stream");
			mimeTypeMap.Add(".movie", "video/x-sgi-movie");
			mimeTypeMap.Add(".mp2", "audio/mp2");
			mimeTypeMap.Add(".mp3", "audio/mp3");
			mimeTypeMap.Add(".mpa", "video/x-mpg");
			mimeTypeMap.Add(".mpe", "video/x-mpeg");
			mimeTypeMap.Add(".mpg", "video/mpg");
			mimeTypeMap.Add(".mpp", "application/vnd.ms-project");
			mimeTypeMap.Add(".mpt", "application/vnd.ms-project");
			mimeTypeMap.Add(".mpv2", "video/mpeg");
			mimeTypeMap.Add(".mpx", "application/vnd.ms-project");
			mimeTypeMap.Add(".mxp", "application/x-mmxp");
			mimeTypeMap.Add(".nrf", "application/x-nrf");
			mimeTypeMap.Add(".odc", "text/x-ms-odc");
			mimeTypeMap.Add(".p10", "application/pkcs10");
			mimeTypeMap.Add(".p7b", "application/x-pkcs7-certificates");
			mimeTypeMap.Add(".p7m", "application/pkcs7-mime");
			mimeTypeMap.Add(".p7s", "application/pkcs7-signature");
			mimeTypeMap.Add(".pci", "application/x-pci");
			mimeTypeMap.Add(".pcx", "application/x-pcx");
			mimeTypeMap.Add(".pfx", "application/x-pkcs12");
			mimeTypeMap.Add(".pic", "application/x-pic");
			mimeTypeMap.Add(".pl", "application/x-perl");
			mimeTypeMap.Add(".pls", "audio/scpls");
			mimeTypeMap.Add(".pot", "application/vnd.ms-powerpoint");
			mimeTypeMap.Add(".ppm", "application/x-ppm");
			mimeTypeMap.Add(".pr", "application/x-pr");
			mimeTypeMap.Add(".prn", "application/x-prn");
			mimeTypeMap.Add(".ptn", "application/x-ptn");
			mimeTypeMap.Add(".r3t", "text/vnd.rn-realtext3d");
			mimeTypeMap.Add(".ram", "audio/x-pn-realaudio");
			mimeTypeMap.Add(".rat", "application/rat-file");
			mimeTypeMap.Add(".rec", "application/vnd.rn-recording");
			mimeTypeMap.Add(".rgb", "application/x-rgb");
			mimeTypeMap.Add(".rjt", "application/vnd.rn-realsystem-rjt");
			mimeTypeMap.Add(".rle", "application/x-rle");
			mimeTypeMap.Add(".rmf", "application/vnd.adobe.rmf");
			mimeTypeMap.Add(".rmj", "application/vnd.rn-realsystem-rmj");
			mimeTypeMap.Add(".rmp", "application/vnd.rn-rn_music_package");
			mimeTypeMap.Add(".rmvb", "application/vnd.rn-realmedia-vbr");
			mimeTypeMap.Add(".rnx", "application/vnd.rn-realplayer");
			mimeTypeMap.Add(".rpm", "audio/x-pn-realaudio-plugin");
			mimeTypeMap.Add(".rt", "text/vnd.rn-realtext");
			mimeTypeMap.Add(".sam", "application/x-sam");
			mimeTypeMap.Add(".sdp", "application/sdp");
			mimeTypeMap.Add(".sit", "application/x-stuffit");
			mimeTypeMap.Add(".sld", "application/x-sld");
			mimeTypeMap.Add(".smi", "application/smil");
			mimeTypeMap.Add(".smk", "application/x-smk");
			mimeTypeMap.Add(".sol", "text/plain");
			mimeTypeMap.Add(".spc", "application/x-pkcs7-certificates");
			mimeTypeMap.Add(".spp", "text/xml");
			mimeTypeMap.Add(".sst", "application/vnd.ms-pki.certstore");
			mimeTypeMap.Add(".stm", "text/html");
			mimeTypeMap.Add(".svg", "text/xml");
			mimeTypeMap.Add(".tdf", "application/x-tdf");
			mimeTypeMap.Add(".tga", "application/x-tga");
			mimeTypeMap.Add(".tld", "text/xml");
			mimeTypeMap.Add(".torrent", "application/x-bittorrent");
			mimeTypeMap.Add(".txt", "text/plain");
			mimeTypeMap.Add(".uls", "text/iuls");
			mimeTypeMap.Add(".vda", "application/x-vda");
			mimeTypeMap.Add(".vml", "text/xml");
			mimeTypeMap.Add(".vss", "application/vnd.visio");
			mimeTypeMap.Add(".vsx", "application/vnd.visio");
			mimeTypeMap.Add(".vxml", "text/xml");
			mimeTypeMap.Add(".wax", "audio/x-ms-wax");
			mimeTypeMap.Add(".wb2", "application/x-wb2");
			mimeTypeMap.Add(".wbmp", "image/vnd.wap.wbmp");
			mimeTypeMap.Add(".wk3", "application/x-wk3");
			mimeTypeMap.Add(".wkq", "application/x-wkq");
			mimeTypeMap.Add(".wm", "video/x-ms-wm");
			mimeTypeMap.Add(".wmd", "application/x-ms-wmd");
			mimeTypeMap.Add(".wml", "text/vnd.wap.wml");
			mimeTypeMap.Add(".wmx", "video/x-ms-wmx");
			mimeTypeMap.Add(".wp6", "application/x-wp6");
			mimeTypeMap.Add(".wpg", "application/x-wpg");
			mimeTypeMap.Add(".wq1", "application/x-wq1");
			mimeTypeMap.Add(".wri", "application/x-wri");
			mimeTypeMap.Add(".ws", "application/x-ws");
			mimeTypeMap.Add(".wsc", "text/scriptlet");
			mimeTypeMap.Add(".wvx", "video/x-ms-wvx");
			mimeTypeMap.Add(".xdr", "text/xml");
			mimeTypeMap.Add(".xfdf", "application/vnd.adobe.xfdf");
			mimeTypeMap.Add(".xlw", "application/x-xlw");
			mimeTypeMap.Add(".xpl", "audio/scpls");
			mimeTypeMap.Add(".xql", "text/xml");
			mimeTypeMap.Add(".xsd", "text/xml");
			mimeTypeMap.Add(".xslt", "text/xml");
			mimeTypeMap.Add(".x_b", "application/x-x_b");
			mimeTypeMap.Add(".sisx", "application/vnd.symbian.install");
			mimeTypeMap.Add(".ipa", "application/vnd.iphone");
			mimeTypeMap.Add(".xap", "application/x-silverlight-app");
			//ms office 2007及以上
			mimeTypeMap.Add(".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
			mimeTypeMap.Add(".dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template");
			mimeTypeMap.Add(".docm", "application/vnd.ms-word.document.macroEnabled.12");
			mimeTypeMap.Add(".dotm", "application/vnd.ms-word.template.macroEnabled.12");
			mimeTypeMap.Add(".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
			mimeTypeMap.Add(".xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template");
			mimeTypeMap.Add(".xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12");
			mimeTypeMap.Add(".xltm", "application/vnd.ms-excel.template.macroEnabled.12");
			mimeTypeMap.Add(".xlam", "application/vnd.ms-excel.addin.macroEnabled.12");
			mimeTypeMap.Add(".xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12");
			mimeTypeMap.Add(".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
			mimeTypeMap.Add(".potx", "application/vnd.openxmlformats-officedocument.presentationml.template");
			mimeTypeMap.Add(".ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow");
			mimeTypeMap.Add(".ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12");
			mimeTypeMap.Add(".pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
			mimeTypeMap.Add(".potm", "application/vnd.ms-powerpoint.template.macroEnabled.12");
			mimeTypeMap.Add(".ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12");
		}

		public static string EncodeJsString(string s)
		{
			StringBuilder sb = new StringBuilder();

			if (string.IsNullOrEmpty(s)) return string.Empty;

			foreach (char c in s)
			{
				switch (c)
				{
					case '\'':
						sb.Append("\\'");
						break;
					case '\"':
						sb.Append("\\\"");
						break;
					case '\\':
						sb.Append("\\\\");
						break;
					case '\b':
						sb.Append("\\b");
						break;
					case '\f':
						sb.Append("\\f");
						break;
					case '\n':
						sb.Append("\\n");
						break;
					case '\r':
						sb.Append("\\r");
						break;
					case '\t':
						sb.Append("\\t");
						break;
					default:
						int i = (int)c;
						if (i < 32 || i > 127)
						{
							sb.Append(c);
							//sb.AppendFormat("\\u{0:X04}", i);
						}
						else
						{
							sb.Append(c);
						}
						break;
				}
			}

			return sb.ToString();
		}

		public static string GetHttpMimeType(string fileName)
		{
			string mimeType = string.Empty;
			string ext = Path.GetExtension(fileName);
			if (!string.IsNullOrEmpty(ext))
			{
				ext = ext.ToLower();
				mimeTypeMap.TryGetValue(ext, out mimeType);
				if (string.IsNullOrEmpty(mimeType)) mimeType = "application/octet-stream";
			}
			return mimeType;
		}

		public static void ContentType(HttpResponse Response, HeaderType hType, string fileName)
		{
			switch (hType)
			{
				case HeaderType.Download:
					Response.ContentType = "application/force-download";
					Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", HttpUtility.UrlEncode((string.IsNullOrEmpty(fileName) ? DateTime.Now.Ticks.ToString() : fileName), System.Text.Encoding.UTF8)));
					break;
				case HeaderType.Open:
					Response.ContentType = "application/octet-stream";
					break;
				case HeaderType.Other:
					Response.ContentType = WebHelper.GetHttpMimeType(fileName);
					break;
			}
		}

		public enum HeaderType
		{
			Download,
			Open,
			Other
		}
	}
}